package verify

import (
	"awesomeProject/app/model"
	"awesomeProject/global"
	"errors"
	"fmt"

	"awesomeProject/app/request"
	"awesomeProject/app/service"
)

func UserLogin(r *request.UserLoginWithUsername) error {
	if r.Username == "" {
		return errors.New("用户名（username）不能为空")
	}

	if r.Password == "" {
		return errors.New("登录密码（password）不能为空")
	}

	return nil
}

func UserCreate(r *request.UserCreate, operator model.User) error {
	if r.Username == "" {
		return errors.New("用户名（username）不能为空")
	}

	// 唯一索引
	var userSrv service.UserSrv
	user := userSrv.FindByUsername(r.Username)
	if user.ID > 0 {
		return errors.New("用户名（username）已被使用")
	}

	if len(r.Password) < 6 || len(r.Password) > 20 {
		return errors.New("密码长度超出限制（6～20位）")
	}

	if !operator.SuperAdmin && r.CompanyId == 0 {
		return errors.New("非超管角色不能创建无组织用户！")
	}
	return nil
}

func UserUpdate(id uint, r *request.UserUpdate) error {
	if id == global.SuperAdminUserID {
		return errors.New("超级管理员不允许编辑")
	}

	if r.Nickname == "" {
		return errors.New("昵称（nickname）不能为空")
	}
	return nil
}

func CurrentUserUpdate(id uint, r *request.CurrentUserUpdate) error {
	if id == global.SuperAdminUserID {
		return errors.New("超级管理员不允许编辑")
	}

	if r.Nickname == "" {
		return errors.New("昵称（nickname）不能为空")
	}
	return nil
}

func UserPassword(r *request.UserPassword) error {
	if r.RPassword == "" {
		return errors.New("原密码不能为空")
	}
	if r.Password == "" {
		return errors.New("新密码不能为空")
	}
	if r.CPassword == "" {
		return errors.New("确认密码不能为空")
	}
	if r.CPassword != r.Password {
		return errors.New("新密码与确认密码不一致")
	}
	if len(r.Password) < 6 || len(r.Password) > 20 {
		return errors.New("密码长度超出系统限制（6～20）")
	}
	return nil
}

func UserPasswordReset(r *request.UserPasswordReset) error {
	if r.NewPassword == "" {
		return errors.New("密码不能为空")
	}
	if len(r.NewPassword) < 6 || len(r.NewPassword) > 20 {
		return errors.New("密码长度超出系统限制（6～20）")
	}
	return nil
}

func UserIpLimit(r *request.UserIpLimit) error {
	return nil
}

func UserPagination(r *request.UserPagination) error {
	if r.PageIndex == 0 {
		r.PageIndex = 1
	}
	if r.PageSize == 0 {
		r.PageSize = 20
	}
	//
	return nil
}

func AddShopsForUser(r *request.AssignShops) error {
	fmt.Println(r.ShopIds)
	if len(r.ShopIds) == 0 {
		return errors.New("请至少选择一个店铺！")
	}

	return nil
}
